package com.base.component.ai.agent.core;

import java.util.function.Consumer;

import com.base.component.ai.agent.bo.ContextBO;
import com.base.component.ai.agent.bo.ContextParamBO;

/**
 * chat代理接口
 * @author start
 *
 */
public interface AgentProxyService<MSG,AP extends ContextParamBO,PP> {
	
	/**
	 * 是否支持执行
	 * @param name
	 * @return
	 */
	boolean support(String name);

	/**
	 * 开始之前调用初始化属性设置
	 * @param context
	 * @param ws
	 * @return  true:继续执行  false:停止处理
	 */
	boolean afterPropertiesSet(ContextBO<MSG,AP,PP> context,Consumer<Object> ws);

	/**
	 * 响应可以进行消息的处理及保存
	 * @param context
	 * @param item
	 * @return
	 * @param <M>
	 */
	<M>boolean msgHandle(ContextBO<MSG,AP,PP> context,M item);
	
	/**
	 * 结束后调用必须保证能调用到finally方法中执行
	 * @param context
	 */
	void destory(ContextBO<MSG,AP,PP> context);
	
}
